/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package byblos.apresentacao.tela;

import byblos.apresentacao.idioma.InterceptadorIdioma;
import byblos.apresentacao.usuario.InterceptadorCategoriaUsuario;
import byblos.negocio.galeria.GaleriaHome;
import byblos.negocio.tela.Tela;
import byblos.negocio.tela.TipoTela;
import byblos.persistencia.DAO;
import byblos.util.MultipartRequestInterceptor;
import byblos.util.StringUtil;
import byblos.util.Util;
import javax.servlet.http.HttpServletRequest;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.In;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Out;
import org.vraptor.annotations.Parameter;
import org.vraptor.interceptor.UploadedFileInformation;

/**
 *
 * @author Diego
 */
@Component
@InterceptedBy(value = {InterceptadorIdioma.class, InterceptadorCategoriaUsuario.class, MultipartRequestInterceptor.class})
public class TelaSalvarComponent {

    @Parameter(create = true)
    private Tela tela;
    @Parameter
    private Integer galeriaId;
    @In(required = false)
    private UploadedFileInformation display;
    @In
    private HttpServletRequest request;
    @Out
    private String mensagemSucesso;
    @Out
    private String mensagemErro;

    public String salvar() {
        boolean atualizouImagem = false;
        if (galeriaId != null && galeriaId > 0) {
            GaleriaHome galeria = new DAO().localizar(GaleriaHome.class, galeriaId);
            tela.setGaleria(galeria);
        } else if (tela.getTipoTela() == TipoTela.HOME) {
            tela.setGaleria(new GaleriaHome());
        }
        if (display != null) {
            String nomeDisplay = Util.removerAcentos(display.getFileName());
            String caminhoRelativoDisplay = Util.salvarArquivo(request, "display", display, false, null);
            atualizouImagem = true;
            if (tela.getTipoTela() == TipoTela.HOME) {
                tela.getGaleria().adicionarFoto(caminhoRelativoDisplay, nomeDisplay, null);
            } else {
                tela.setDisplay(caminhoRelativoDisplay);
            }
        } else {
            Tela telaAntiga = new DAO().localizar(Tela.class, tela.getId());
            tela.setDisplay(telaAntiga.getDisplay());
        }
        //descobrir o que ainda pula linha
        tela.setTexto(StringUtil.substituir(tela.getTexto(), "\n", ""));
        tela.setTexto(StringUtil.substituir(tela.getTexto(), "\r", ""));
        new DAO().salvar(tela);
        if (atualizouImagem) {
            request.getParameterMap().put("tipo", "" + tela.getTipoTela().ordinal());
            mensagemSucesso = "Arquivo adicionado com sucesso!";
            return "editar";
        } else {
            mensagemSucesso = "Tela salva com sucesso!";
            return "ok";
        }
    }
}
